import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;

public class BossDanMaKu2 extends GameObject{

//	public Image image;

	public float x;
	public float y;
	Rectangle rect;

	public boolean active;// 활성화 여부 -> 이 값이 false이면 관리 목록에서 제거

	public int count; // 전체 이미지에 포함된 단위 이미지 갯수
	public int width; // 단위 이미지의 넓이
	public int height; // 단위 이미지의 높이

	private int currentIndex = -1;// 현재 표시할 단위 이미지 위치

	private long prevChangedTime = 0;
	private long changeSpeed = 20;// 탄 색깔 변경시간
	
	boolean odd = true; // 홀수 패턴일 때 참
//	double vx[] = new double[16];
//	double vy[] = new double[16];// 원형탄의 속도 벡터
	
	// 탄환과 탄환 사이의 각도를 계산하
	float rad_step ;

	// 최초의 탄환의 각도를 계산하기
	// 홀수 패턴일 떄는 rad_step/2만큼 틀어줌.
	float rad ;
	float vx,vy;
	

	public BossDanMaKu2(Image image, int x, int y, int count,float vx, float vy) {
		this.image = image;
		this.x = x;
		this.y = y;
		
		this.vx=vx;
		this.vy=vy;
		
		this.count = count;// 이미지 나눌 갯
		width = image.getWidth(null) / count;// 가로로 긴 이미지를 count로 나눠서 하나의 이미지로
												// 보이게
		height = image.getHeight(null);

		rect = new Rectangle(image.getWidth(null), image.getHeight(null));// 충돌
																			// 체크용
																			// Rectangle
	}

//	public void initCircleBullet(int n, float speed) {
//
//		rad_step = (float) Math.PI * 2 / n;
//		rad = rad_step / 2;
//
//		
//
//		for (int i = 0; i < n; i++ ) {
//			vx[i] = Math.cos(rad) * speed;
//			vy[i] = Math.sin(rad) * speed;
//			rad += rad_step;
//			System.out.println(vx[i]);
//		}
//		
//	}

	public void update() {

		if (x < 0) {
			active = false;
		}if (y < 0) {
			active = false;
		}if (x > 800) {
			active = false;
		}if (y >800) {
			active = false;
		}
		long currentTime = System.currentTimeMillis();
		if (currentTime - prevChangedTime > changeSpeed) {// 이미지 변환 시간 조
			currentIndex++;
			if (currentIndex == 10) {// 이미지 반복위해 이미지 끝까지 가면 다시
				currentIndex = 0; // 0으로 돌림
			}
			if (currentIndex == count) {
				active = false;
			}
			prevChangedTime = currentTime;
		}
		x += vx;
		y += vy;

	}

	public void render(Graphics g) {

		if (active) {
			g.drawImage(image, (int) x, // 표시할 화면의 좌상단 x좌표
					(int) y, // 표시할 화면의 좌상단 y좌표
					(int) x + width, // 표시할 화면의 우하단 x좌표
					(int) y + height, // 표시할 화면의 우하단 y좌표
					width * currentIndex, // 원본 이미지에서 잘라낼 영역의 좌상단 x
					0, // 원본 이미지에서 잘라낼 영역의 좌상단 y
					width * (currentIndex + 1), // 원본 이미지에서 잘라낼 영역의 우하단 x
					height, // 원본 이미지에서 잘라낼 영역의 우하단 y
					null); // 원본 이미지에서 잘라내서 화면에 표시한다
		}

	}

	public Rectangle getArea() {
		rect.x = (int) x;
		rect.y = (int) y;
		return rect;
	}

}

